#include "cpu/exec/template-start.h"

#define instr ret

make_helper(concat(ret_n_,SUFFIX)){
     current_sreg=R_SS;
     cpu.eip=MEM_R(reg_l(R_ESP));
     if(DATA_BYTE==2){
        cpu.eip&=0xffff;
     }
     reg_l(R_ESP)+=DATA_BYTE;
     print_asm("ret");
     return 1;
  }

make_helper(concat(ret_i_,SUFFIX)){
      int val=instr_fetch(cpu.eip+1,2);
      int i;
      current_sreg=R_SS;
      cpu.eip=MEM_R(REG(R_ESP));
      if(DATA_BYTE==2){
         cpu.eip&=0xffff;
       }
      REG(R_ESP)+=DATA_BYTE;
      for(i=0;i<val;i+=DATA_BYTE){
         MEM_W(REG(R_ESP)+i,0);
      }
      REG(R_ESP)+=val;
      print_asm("ret $0x%x",val);
      return 1;
   }



#include "cpu/exec/template-end.h"
